package br.usjt.mazerobot.util;

import br.usjt.mazerobot.Configuracao;
import br.usjt.mazerobot.comunicacao.Comunicador;
import lejos.nxt.LCD;

public class Logger {

    private Comunicador comunicador;
    private String[] buffer = new String[9];
    private boolean logRemoto;
    private boolean logLocal;

    public Logger() {
        logRemoto = false;
        logLocal = Configuracao.LOG_LOCAL;
    }

    public Logger(Comunicador comunicador) {
        logRemoto = Configuracao.LOG_REMOTO;
        logLocal = Configuracao.LOG_LOCAL;
        this.comunicador = comunicador;
    }

    public void info(String info) {
        
        while(info.length() < 16){
            info += " ";
        }

        if (logRemoto) {
            enviarLog(info);
        }
        
        if (logLocal) {
            int index = 0;

            while (buffer[index] != null) {
                index++;
            }

            if (index == buffer.length - 1) {
                for (int i = 1; i < buffer.length; i++) {
                    buffer[i - 1] = buffer[i];
                }
                index--;
            }

            buffer[index] = info;

            imprime();
        }
        
    }

    private void imprime() {
        int index = 0;
        
        while (buffer[index] != null) {
            LCD.drawString(buffer[index], 0, index);
            index++;
        }
    }

    private void enviarLog(String info) {
        comunicador.enviarLog(info);
    }
}
